package com.example.funnywolf.richtextdemo.spans;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ClassName StringUtils
 * @Author csl
 * @Date 2021/6/9
 * @Description
 **/
public class StringUtils {
    /**
     *  输出子串出现的次数
     * @param str
     * @param sub
     */
    public static int subStringCount(String str, String sub) {
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            int j = i;
            int k = 0;
            while (j < str.length() && k < sub.length()) {
                if (str.charAt(j) == sub.charAt(k)) {
                    ++j;
                    ++k;
                    //匹配完
                    if (k == sub.length() - 1) {
                        ++count;
                    }
                } else {//不相同就输出
                    break;
                }
            }
        }
        return count;
//        System.out.println(count);
    }

    /**
     * 计算重复元素第 n个的下标
     * @param str 原字符串
     * @param modelStr 子字符串
     * @param count 需要计算出现的第几次
     * @return
     */
    public static int getFromIndex(String str, String modelStr, Integer count) {
        //对子字符串进行匹配
        Matcher slashMatcher = Pattern.compile(modelStr).matcher(str);
        int index = 0;
        //matcher.find(),尝试查找与该模式匹配的输入序列的下一个子序列
        while(slashMatcher.find()) {
            index++;
            //当modelStr字符第count次出现的位置
            if(index == count){
                break;
            }
        }
        //matcher.start(),返回以前匹配的初始索引。
        return slashMatcher.start();
    }

}
